<?php

namespace app\common\model;

use think\Model;

class GoodsCate extends BaseModel
{

    /**
     * 根据cate_id递归查询当前分类以及所有父级分类信息
     */
    public static function getCateParents($cateId, $dealerId, $companyId): array
    {
        $cate = self::find($cateId); // 首先获取当前分类
        if (!$cate) {
            return []; // 如果分类不存在，则返回空数组
        }
        $cate->cate_id    = $cateId;
        $cate->dealer_id  = $dealerId;
        $cate->company_id = $companyId;
        // 隐藏不需要的字段
        $cate->hidden(['create_time', 'update_time', 'delete_time']);
        // 递归查询父级分类
        $parents = self::getAncestors($cate);
        $cate    = $cate->toArray();
        // 将当前分类和父级分类合并
        return array_reverse(array_merge([$cate], $parents));
    }

    /**
     * 递归获取分类的所有父级分类
     */
    protected static function getAncestors(Model $model, &$parents = [])
    {
        if ($model->pid > 0) {
            // 如果存在父级分类，则递归查询
            $parentCate = self::find($model->pid);
            if ($parentCate) {
                $parentCate->cate_id    = $parentCate->id;
                $parentCate->dealer_id  = $model->dealer_id;
                $parentCate->company_id = $model->company_id;
                // 隐藏不需要的字段
                $parentCate->hidden(['create_time', 'update_time', 'delete_time']);
                $parents[] = $parentCate->toArray();
                self::getAncestors($parentCate, $parents); // 继续递归
            }
        }
        return $parents;
    }
}